#ifndef PLAYERVIDEO_H
#define PLAYERVIDEO_H
#include <QWidget>
#include "VideoPlayer/VideoPlayer.h"
#include<QTimer>
namespace Ui {
class PlayerVideo;
}

class  PlayerVideo : public QWidget, public VideoPlayerCallBack
{
    Q_OBJECT

public:
      PlayerVideo(QWidget *parent = nullptr);
    ~PlayerVideo();
    QString getFilePath();
    VideoInfo getVideoInfo();
protected:
    bool eventFilter(QObject *target, QEvent *event);
private:
    Ui::PlayerVideo *ui;
    VideoPlayer *mPlayer; //播放线程
    QTimer *mTimer; //定时器-获取当前视频时间
    float mVolume=50;
    VideoInfo videoInfo;



private slots:
    ///播放器相关的槽函数
    void slotSliderMoved(int value);
    void slotTimerTimeOut();
    void slotBtnClick(bool isChecked);
    void stackCurrentChanged(int currentPage);


    ///以下函数，是播放器的回调函数，用于输出信息给界面
protected:
    ///打开文件失败
    void onOpenVideoFileFailed(const int &code);

//    ///打开sdl失败的时候回调此函数
    void onOpenSdlFailed(const int &code);

//    ///获取到视频时长的时候调用此函数
    void onTotalTimeChanged(const VideoInfo &videoInfo);

//    ///播放器状态改变的时候回调此函数
    void onPlayerStateChanged(const VideoPlayerState &state, const bool &hasVideo, const bool &hasAudio);

    ///显示视频数据，此函数不宜做耗时操作，否则会影响播放的流畅性。
    void onDisplayVideo(VideoFramePtr videoFrame);
};

#endif // PLAYER_H
